<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>MiXiM: InterpolatorBase&lt; _ContainerType &gt; Class Template Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">MiXiM
   &#160;<span id="projectnumber">2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('a00113.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">InterpolatorBase&lt; _ContainerType &gt; Class Template Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="InterpolatorBase" --><div class="dynheader">
Inheritance diagram for InterpolatorBase&lt; _ContainerType &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a00795.png" border="0" usemap="#InterpolatorBase_3_01__ContainerType_01_4_inherit__map" alt="Inheritance graph"/></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for InterpolatorBase&lt; _ContainerType &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="a00796.png" border="0" usemap="#InterpolatorBase_3_01__ContainerType_01_4_coll__map" alt="Collaboration graph"/></div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="a00797.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5425b9d0d46fc00e73bfbfd5dac2235b"></a><!-- doxytag: member="InterpolatorBase::storage_type" ref="a5425b9d0d46fc00e73bfbfd5dac2235b" args="" -->
typedef _ContainerType&#160;</td><td class="memItemRight" valign="bottom"><b>storage_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08ed542e8cf2d5d5db6a57853d99b395"></a><!-- doxytag: member="InterpolatorBase::container_type" ref="a08ed542e8cf2d5d5db6a57853d99b395" args="" -->
typedef storage_type&#160;</td><td class="memItemRight" valign="bottom"><b>container_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77ef89f853cd60547a36139edcc08e74"></a><!-- doxytag: member="InterpolatorBase::key_type" ref="a77ef89f853cd60547a36139edcc08e74" args="" -->
typedef storage_type::key_type&#160;</td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc214ec8fb530ba3366e27ed0562afe2"></a><!-- doxytag: member="InterpolatorBase::key_cref_type" ref="adc214ec8fb530ba3366e27ed0562afe2" args="" -->
typedef const key_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>key_cref_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86d79e0651ad28e573d9e459431d1d15"></a><!-- doxytag: member="InterpolatorBase::mapped_type" ref="a86d79e0651ad28e573d9e459431d1d15" args="" -->
typedef storage_type::mapped_type&#160;</td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacd78d74d033b98dab7e6e4a4ff37827"></a><!-- doxytag: member="InterpolatorBase::mapped_cref_type" ref="aacd78d74d033b98dab7e6e4a4ff37827" args="" -->
typedef const mapped_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>mapped_cref_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a4373ff4faec82f586e83ef61e49ca7"></a><!-- doxytag: member="InterpolatorBase::pair_type" ref="a2a4373ff4faec82f586e83ef61e49ca7" args="" -->
typedef storage_type::value_type&#160;</td><td class="memItemRight" valign="bottom"><b>pair_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afebb8b6a1cee5e65401bcae5fb664bc6"></a><!-- doxytag: member="InterpolatorBase::iterator" ref="afebb8b6a1cee5e65401bcae5fb664bc6" args="" -->
typedef storage_type::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a728b368da1a67c20b07538eb2a2841ba"></a><!-- doxytag: member="InterpolatorBase::const_iterator" ref="a728b368da1a67c20b07538eb2a2841ba" args="" -->
typedef <br class="typebreak"/>
storage_type::const_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d624c60eda67b0801122c3803a9fc55"></a><!-- doxytag: member="InterpolatorBase::comparator_type" ref="a0d624c60eda67b0801122c3803a9fc55" args="" -->
typedef <a class="el" href="a00169.html">PairLess</a>&lt; pair_type, <br class="typebreak"/>
key_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>comparator_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a809a32fb20618d965208bd82424bb853"></a><!-- doxytag: member="InterpolatorBase::interpolated" ref="a809a32fb20618d965208bd82424bb853" args="" -->
typedef <a class="el" href="a00111.html">Interpolated</a>&lt; mapped_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>interpolated</b></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac60b7bfe1d54bb98e6bd9fc86046f8a7"></a><!-- doxytag: member="InterpolatorBase::InterpolatorBase" ref="ac60b7bfe1d54bb98e6bd9fc86046f8a7" args="(mapped_cref_type oorv)" -->
&#160;</td><td class="memItemRight" valign="bottom"><b>InterpolatorBase</b> (mapped_cref_type oorv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a418f7310b70491f3151af9c629de1731"></a><!-- doxytag: member="InterpolatorBase::continueAtOutOfRange" ref="a418f7310b70491f3151af9c629de1731" args="(void) const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>continueAtOutOfRange</b> (void) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00111.html">interpolated</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#af2aaa8a601ff4b04f34578b6e3d9d793">operator()</a> (const const_iterator &amp;first, const const_iterator &amp;last, key_cref_type pos) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Functor operator of this class which interpolates the value at the passed position using the values between the passed Iterators.  <a href="#af2aaa8a601ff4b04f34578b6e3d9d793"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad595dcb21de2a3342353a6d537a817e7"></a><!-- doxytag: member="InterpolatorBase::isStepping" ref="ad595dcb21de2a3342353a6d537a817e7" args="() const " -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#ad595dcb21de2a3342353a6d537a817e7">isStepping</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents the interpolator a stepping function. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00111.html">interpolated</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#ad20a467fabf3bf4173251d6f3c6a7deb">operator()</a> (const const_iterator &amp;first, const const_iterator &amp;last, key_cref_type pos, const_iterator upperBound) const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Functor operator of this class which interpolates the value at the passed position using the values between the passed Iterators.  <a href="#ad20a467fabf3bf4173251d6f3c6a7deb"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cf11628ee68fe8a058021afeb63ac75"></a><!-- doxytag: member="InterpolatorBase::setOutOfRangeVal" ref="a8cf11628ee68fe8a058021afeb63ac75" args="(mapped_cref_type oorv)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a8cf11628ee68fe8a058021afeb63ac75">setOutOfRangeVal</a> (mapped_cref_type oorv)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Getter and Setter method for out of range value. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f80f85cc052c18230de63753ef0455c"></a><!-- doxytag: member="InterpolatorBase::getOutOfRangeVal" ref="a1f80f85cc052c18230de63753ef0455c" args="(void) const " -->
mapped_cref_type&#160;</td><td class="memItemRight" valign="bottom"><b>getOutOfRangeVal</b> (void) const </td></tr>
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a833e51f2e6ce34330574ea3850b906db"></a><!-- doxytag: member="InterpolatorBase::comp" ref="a833e51f2e6ce34330574ea3850b906db" args="" -->
<a class="el" href="a00169.html">comparator_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a833e51f2e6ce34330574ea3850b906db">comp</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Comparator for STL functions. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae79c26e2532175da7eaf9b8183c7cfe9"></a><!-- doxytag: member="InterpolatorBase::asInterpolated" ref="ae79c26e2532175da7eaf9b8183c7cfe9" args="(mapped_cref_type rVal, bool bIsOutOfRange, bool bIsInterpolated=true) const " -->
<a class="el" href="a00111.html">interpolated</a>&#160;</td><td class="memItemRight" valign="bottom"><b>asInterpolated</b> (mapped_cref_type rVal, bool bIsOutOfRange, bool bIsInterpolated=true) const </td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1e39c73d7d763baea464c1eec0a8b5a"></a><!-- doxytag: member="InterpolatorBase::continueOutOfRange" ref="ae1e39c73d7d763baea464c1eec0a8b5a" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>continueOutOfRange</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33d2db2305227e4b7fe5e2ec7e800b80"></a><!-- doxytag: member="InterpolatorBase::outOfRangeVal" ref="a33d2db2305227e4b7fe5e2ec7e800b80" args="" -->
<a class="el" href="a00111.html">interpolated</a>&#160;</td><td class="memItemRight" valign="bottom"><b>outOfRangeVal</b></td></tr>
</table>
<h3>template&lt;class _ContainerType&gt;<br/>
 class InterpolatorBase&lt; _ContainerType &gt;</h3>

<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="af2aaa8a601ff4b04f34578b6e3d9d793"></a><!-- doxytag: member="InterpolatorBase::operator()" ref="af2aaa8a601ff4b04f34578b6e3d9d793" args="(const const_iterator &amp;first, const const_iterator &amp;last, key_cref_type pos) const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class _ContainerType&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00111.html">interpolated</a> <a class="el" href="a00113.html">InterpolatorBase</a>&lt; _ContainerType &gt;::operator() </td>
          <td>(</td>
          <td class="paramtype">const const_iterator &amp;&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const const_iterator &amp;&#160;</td>
          <td class="paramname"><em>last</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">key_cref_type&#160;</td>
          <td class="paramname"><em>pos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Functor operator of this class which interpolates the value at the passed position using the values between the passed Iterators. </p>
<p>The returned instance of interpolated represents the result. Which can be either an actual entry of the interpolated map (if the position two interpolate was exactly that. Or it can be an interpolated value, if the passed position was between two entries of the map. This state can be retrieved with the "isInterpolated"-Member of the returned "interpolated". </p>

<p>Referenced by <a class="el" href="a00113.html#af2aaa8a601ff4b04f34578b6e3d9d793">InterpolatorBase&lt; std::map&lt; simtime_t, argument_value_t &gt; &gt;::operator()()</a>.</p>
<div class="fragment"><pre class="fragment">                                               {

    <span class="keywordflow">if</span>(first == last) {
      <span class="keywordflow">return</span> outOfRangeVal;
    }

    const_iterator right = std::upper_bound(first, last, pos, <a class="code" href="a00113.html#a833e51f2e6ce34330574ea3850b906db" title="Comparator for STL functions.">comp</a>);

    <span class="keywordflow">return</span> <a class="code" href="a00113.html#af2aaa8a601ff4b04f34578b6e3d9d793" title="Functor operator of this class which interpolates the value at the passed position using the values b...">operator()</a>(first, last, pos, right);
  }
</pre></div>
</div>
</div>
<a class="anchor" id="ad20a467fabf3bf4173251d6f3c6a7deb"></a><!-- doxytag: member="InterpolatorBase::operator()" ref="ad20a467fabf3bf4173251d6f3c6a7deb" args="(const const_iterator &amp;first, const const_iterator &amp;last, key_cref_type pos, const_iterator upperBound) const =0" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class _ContainerType&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="a00111.html">interpolated</a> <a class="el" href="a00113.html">InterpolatorBase</a>&lt; _ContainerType &gt;::operator() </td>
          <td>(</td>
          <td class="paramtype">const const_iterator &amp;&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const const_iterator &amp;&#160;</td>
          <td class="paramname"><em>last</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">key_cref_type&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const_iterator&#160;</td>
          <td class="paramname"><em>upperBound</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Functor operator of this class which interpolates the value at the passed position using the values between the passed Iterators. </p>
<p>The upperBound-iterator has to point two the entry next bigger as the passed position to interpolate.</p>
<p>The returned instance of interpolated represents the result. Which can be either an actual entry of the interpolated map (if the position to interpolate was exactly that. Or it can be an interpolated value, if the passed position was between two entries of the map. This state can be retrieved with the "isInterpolated"-Member of the returned "interpolated".</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The value of a element between first and last which is nearest to pos and the position is of the element is less or equal to pos. </dd></dl>

<p>Implemented in <a class="el" href="a00119.html#ae9b11d23c7aa15f1f4f182caa81ce74b">Linear&lt; std::map&lt; Argument::mapped_type, Mapping * &gt; &gt;</a>, <a class="el" href="a00118.html#a1927a59614f2880683c9ee3795ab59fd">Linear&lt; _ContainerType &gt;</a>, <a class="el" href="a00118.html#a1927a59614f2880683c9ee3795ab59fd">Linear&lt; std::map&lt; argument_value_t, Mapping * &gt; &gt;</a>, <a class="el" href="a00118.html#a1927a59614f2880683c9ee3795ab59fd">Linear&lt; std::map&lt; simtime_t, argument_value_t &gt; &gt;</a>, <a class="el" href="a00153.html#a97a548579fe73c473c843a883629efa6">Nearest&lt; _ContainerType &gt;</a>, and <a class="el" href="a00158.html#a3dae081c993095eaedbdb40af0b3a749">NextSmaller&lt; _ContainerType &gt;</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>D:/Projects/MiXiM/extsrc/mixim/src/base/phyLayer/<a class="el" href="a00293_source.html">Interpolation.h</a></li>
</ul>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="a00113.html">InterpolatorBase</a>      </li>

    <li class="footer">Generated on Tue Mar 5 2013 21:26:32 for MiXiM by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
